package br.com.velp.sudecap.web.converter;

import br.com.velp.sudecap.entidade.Usuario;
import br.com.velp.sudecap.service.UsuarioService;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

/**
 * <sumario>
 * <objetivo> "Rastreabilidade" </objetivo>
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 06.11.2012 </data_criacao>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <requisitos_afetados> RF010.01 - Listar Usuários / RF010.02 - Cadastrar Usuários </requisitos_afetados>
 * <descricao> Classe Responsável Pela Conversão de 
 *             Tipos de Objetos Utilizados Em Componentes JSF </descricao>
 * </sumario>
 */
@Component("usuarioConverter")
@Scope("request")
public class UsuarioConverter implements Converter {
    
    @Autowired
    private UsuarioService usuarioService;

    @Override
    public Object getAsObject(FacesContext fc, UIComponent uic, String value) {
	if (value != null && value.trim().length() > 0) {
	    Long codigo = Long.valueOf(value);
	    return this.usuarioService.obterPorId(codigo);
	}
	return null;
    }

    @Override
    public String getAsString(FacesContext fc, UIComponent uic, Object value) {
	if (value != null && !value.equals("")) {
	    Usuario usuario = (Usuario) value;
	    return usuario.getId().toString();
	}
	return null;
    }
}
